#include <QCoreApplication>
#include<QVariant>
#include<QList>
#include<QDateTime>
#include<QByteArray>
#include<QMap>
#include<QMapIterator>
#include<QMultiMap>
#include<QHash>
#include<QHashIterator>
#include<QVector>
#include<QList>
//#include<QLinkedList>//QT6中已经被移除了。
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

//QDateTime
    // QString QByte;
    // QDateTime dt;
    // QByte = dt.currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    // qDebug()<< QByte;

//QByteArray
    // QByteArray QByte("My name is Wangxuhui");
    // qDebug()<<qPrintable(QByte.toLower());//大写转为小写。
    // qDebug()<<qPrintable(QByte.toUpper());//小写转为大写。

//QMap
    // QMap<int,QString> map;

    //插入：两种方式
    // map[1] = "a";
    // map[2] = "b";
    // map.insert(3,"c");
    // qDebug()<<map;

    //删除：需要使用key键删除
    // map.remove(3);
    // qDebug()<<map;

    //遍历：
    //1：Java类型的迭代。
    // QMapIterator<int,QString> it(map);
    // //it.hasNext()当前迭代器指向的元素后面有元素返回ture；否则，返回false；
    // while(it.hasNext()){
    //     //it.next()移动迭代器指向下一个元素。
    //     it.next();
    //     qDebug()<<"key= "<<it.key()<<"  value = "<<it.value();
    // }
    //2:STL类型的迭代。
    //这种类型我理解为一个指针。
    // QMap<int,QString>::ConstIterator it1 = map.constBegin();
    // while(it1 != map.constEnd()){
    //     qDebug()<<"key= "<<it1.key()<<"  value = "<<it1.value();
    //     it1++;
    // }

    //查找
    // qDebug()<<map.value(1);//key寻找对应的value
    // qDebug()<<map.key("b");//value寻找对应的key

    //修改
    // map.insert(1,"wang");
    // //使用STL迭代方法访问(练习)
    // QMap<int,QString>::ConstIterator it = map.constBegin();
    // while(it != map.constEnd()){
    //     qDebug()<<"key = "<<it.key()<<"value = "<<it.value();
    //     it++;
    // }

    //查询是否包含某个键
    // qDebug()<<map.contains(1);
    // qDebug()<<map.contains(5);

    //输出所有QMap的实例化，的key值和value
    // QList<int> key = map.keys();
    // qDebug()<<key;
    // QList<QString> value = map.values();
    // qDebug()<<value;

    //一个键对应多个值。使用QMultiMap创建
    // QMultiMap<QString,QString> MullMap;
    // MullMap.insert("Student","name");
    // MullMap.insert("Student","sex");
    // MullMap.insert("Student","age");
    // MullMap.insert("Student","height");
    // qDebug()<<MullMap;

//QHash
    //插入
    // QHash<int,QString> hash;
    // hash[1] = "wang";
    // hash[2] = "xu";
    // hash[3] = "hui";
    // qDebug()<<hash;
    // hash.insert(3,"dong");
    // qDebug()<<hash;


    //QHash内部的迭代器QHashIterator类
    // QHash<int,QString>::const_iterator it = hash.constBegin();
    // while(it != hash.constEnd()){
    //     qDebug()<<"key = "<<it.key()<<"value = "<<it.value();
    //     it++;
    // }
    // QHash<int,QString>::iterator it = hash.begin();
    // while(it != hash.end()){
    //     qDebug()<<"key = "<<it.key()<<"value = "<<it.value();
    //     it++;
    // }
//QVcetor
    // QVector<int> vec;
    // //插入：2种方式
    // //1、
    // vec<<1;
    // vec<<2;
    // vec<<3;
    // vec<<4;
    // vec<<5;
    // //2、ec.append();
    // vec.append(6);
    // vec.append(7);
    // vec.append(8);
    // vec.append(9);
    // vec.append(10);
    // qDebug()<<vec;

    // //求QVector的元素个数
    // qDebug()<<"vec_count = "<<vec.count();

    // //遍历所有元素
    // for(int i = 0; i < vec.count(); i++){
    //     qDebug()<<vec[i];
    // }

    // // 删除
    // //1、删除单个；
    // vec.remove(2);
    // qDebug()<<vec;
    // // 2、删除范围
    // vec.remove(1,3);
    // qDebug()<<vec;

    // //判断是否包含某个元素
    // qDebug()<<vec.contains(1);
    // qDebug()<<vec.contains(11);

//QList
    // QList<int> list;
    // //插入：
    // for(int i = 0;i < 10; i++){
    //     list.insert(i,i+1);//第一个元素是插入的位置，
    // }

    //遍历：这里使用常量迭代器，不用对元素进行修改保证安全性，
    // QList<int>::const_iterator it = list.constBegin();
    // while(it != list.constEnd()){
    //     qDebug()<<(*it);
    //     it++;
    // }

    //修改
    // QList<int>::iterator it = list.begin();
    // while(it != list.end()){
    //     qDebug()<<(*it)*10;
    //     it++;
    // }

    //添加元素
    // list.append(1);
    // qDebug()<<list;

    //查询QList元素中的元素
    // //1:查询元素的个数；
    // qDebug()<<list.count(1);
    // //2：查找是否包含
    // qDebug()<<list.contains(1);
    // //3:按按照索引查找
    // qDebug()<<list.at(1);

    //修改
    // list.replace(1,666);
    // qDebug()<<list;

    //删除list中的元素
    // //1：按照索引删除
    // list.removeAt(1);
    // //2：删除第一个元素；
    // list.removeFirst();f
    // qDebug()<<list;
//Qvarint：

    //这里需要用到窗口
    return a.exec();
}
